import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLineEdit, QTabWidget


class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PyQt5 Example")
        self.setGeometry(100, 100, 300, 200)

        # 创建一个垂直布局
        self.main_layout = QVBoxLayout()
        self.setLayout(self.main_layout)

        # 创建一个标签页部件
        self.tab_widget = QTabWidget()
        self.main_layout.addWidget(self.tab_widget)

        # 创建三个标签页
        self.tab1 = QWidget()
        self.tab2 = QWidget()
        self.tab3 = QWidget()
        self.tab_widget.addTab(self.tab1, "1")
        self.tab_widget.addTab(self.tab2, "2")
        self.tab_widget.addTab(self.tab3, "3")

        # 为每个标签页添加布局
        self.tab1_layout = QVBoxLayout()
        self.tab1.setLayout(self.tab1_layout)
        self.tab2_layout = QVBoxLayout()
        self.tab2.setLayout(self.tab2_layout)
        self.tab3_layout = QVBoxLayout()
        self.tab3.setLayout(self.tab3_layout)

        # 为标签页 1 创建一个按钮
        self.button1_tab1 = QPushButton("Button 1", self.tab1)
        self.button1_tab1.clicked.connect(self.show_button1_tab1)
        self.tab1_layout.addWidget(self.button1_tab1)

        # 为标签页 2 创建两个按钮
        self.button1_tab2 = QPushButton("Button 1", self.tab2)
        self.button2_tab2 = QPushButton("Button 2", self.tab2)
        self.button1_tab2.clicked.connect(self.show_buttons_tab2)
        self.button2_tab2.clicked.connect(self.show_buttons_tab2)
        self.tab2_layout.addWidget(self.button1_tab2)
        self.tab2_layout.addWidget(self.button2_tab2)
        # self.button1_tab2.hide()
        # self.button2_tab2.hide()

        # 为标签页 3 创建一个输入框和一个按钮
        self.input_box_tab3 = QLineEdit(self.tab3)
        self.button1_tab3 = QPushButton("Button 1", self.tab3)
        self.button1_tab3.clicked.connect(self.show_input_box_and_button_tab3)
        self.tab3_layout.addWidget(self.input_box_tab3)
        self.tab3_layout.addWidget(self.button1_tab3)
        # self.input_box_tab3.hide()
        # self.button1_tab3.hide()

    def show_button1_tab1(self):
        # 显示标签页 1 中的按钮
        self.button1_tab1.show()

    def show_buttons_tab2(self):
        # 显示标签页 2 中的两个按钮
        self.button1_tab2.show()
        self.button2_tab2.show()

    def show_input_box_and_button_tab3(self):
        # 显示标签页 3 中的输入框和按钮
        self.input_box_tab3.show()
        self.button1_tab3.show()


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())